-
-
Notifications
You must be signed in to change notification settings - Fork 365
doc(WebSiteOptions): improve performance for search code #5075
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Reviewer's Guide by SourceryThis PR improves the performance of the search code by changing the data structures used to store website options from Dictionary to FrozenDictionary and List to HashSet. Sequence diagram for improved code search processsequenceDiagram
participant Client
participant CodeSnippetService
participant FrozenDictionary
Client->>CodeSnippetService: GetCodeAsync(codeFile)
CodeSnippetService->>CodeSnippetService: Split codeFile
CodeSnippetService->>FrozenDictionary: TryGetValue(key.ToLowerInvariant())
Note over FrozenDictionary: Improved lookup performance
FrozenDictionary-->>CodeSnippetService: value
CodeSnippetService-->>Client: formatted code
Class diagram showing updated WebsiteOptions data structure changesclassDiagram
class WebsiteOptions {
+FrozenDictionary~string, string~ SourceCodes
+FrozenDictionary~string, string~ Videos
+FrozenDictionary~string, string~ Links
+HashSet~ThemeOption~ Themes
+WebsiteOptions()
}
note for WebsiteOptions "Changed from Dictionary to FrozenDictionary
Changed List to HashSet for better performance"
class CodeSnippetService {
-FrozenDictionary~string, string~ SourceCodes
+GetCodeAsync(string codeFile) Task~string~
}
note for CodeSnippetService "Changed from Dictionary to FrozenDictionary"
File-Level Changes
Assessment against linked issues
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @ArgoZhang - I've reviewed your changes - here's some feedback:
Overall Comments:
- Consider using HashSet.Contains() or TryGetValue() instead of FirstOrDefault() to take full advantage of HashSet's O(1) lookup performance when searching for themes
Here's what I looked at during the review
- 🟢 General issues: all looks good
- 🟢 Security: all looks good
- 🟢 Testing: all looks good
- 🟢 Complexity: all looks good
- 🟢 Documentation: all looks good
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
Co-Authored-By: ice6 <[email protected]>
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #5075 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 631 631
Lines 27990 27990
Branches 4015 4015
=========================================
Hits 27990 27990 ☔ View full report in Codecov by Sentry. |
improve performance for search code
Summary of the changes (Less than 80 chars)
简单描述你更改了什么, 不超过80个字符;如果有关联 Issue 请在下方填写相关编号
Description
fixes #5066
Regression?
[If yes, specify the version the behavior has regressed from]
[是否影响老版本]
Risk
[Justify the selection above]
Verification
Packaging changes reviewed?
☑️ Self Check before Merge
Summary by Sourcery
Improve search code performance by using FrozenDictionary and HashSet for website options.
Enhancements: